A commonly used method to decode convolutional codes is the Viterbi algorithm. The Viterbi algorithm essentially performs maximum likelihood decoding; it reduces the computational load by taking advantage of the special structure in the code trellis. The advantage of Viterbi decoding, compared with brute-force decoding, is that the complexity of a Viterbi decoder is not a function of the number of symbols in the code word sequence.
The algorithm involves calculating a measure of similarity, or distance, between the received signal at a certain time and all the trellis paths entering each state at that time. The Viterbi algorithm removes from consideration those trellis paths that could not possibly be candidates for the maximum likelihood choice. When two paths enter the same state, the one having the best metric is chosen; this path is called the surviving path. The early rejection of the unlikely path reduces the decoding complexity. Still the Viterbi algorithm is quite computationally expensive.
Further, the Viterbi convolutional decoding algorithm is used for forward error correction. The purpose of forward error correction (FEC) is to improve the capacity of a channel by adding some redundant information to the data being transmitted through the channel. The process of adding this redundant information is known as channel coding. Convolutional coding is a major form of channel coding. Convolutional codes operate on serial data, one or a few bits at a time. Convolutional encoding with Viterbi decoding is a FEC technique that is particularly suited to a radio communication channel.
The present invention aims to provide an improved method of decoding of a received data word.